a11y: Improve table_is_row_selected()
authorBenjamin Otte <otte@redhat.com>
Mon, 12 Dec 2011 16:59:36 +0000 (17:59 +0100)
committerBenjamin Otte <otte@redhat.com>
Fri, 16 Dec 2011 03:53:15 +0000 (04:53 +0100)
gtk/a11y/gtktreeviewaccessible.c

index 065be9f4806666da15e3c8c19fa625f44f581abd..d2eaaa5cc3c92e7e407dd665e8b651856312ce12 100644 (file)
@@ -806,22 +806,23 @@ gtk_tree_view_accessible_is_row_selected (AtkTable *table,
                                           gint      row)
 {
   GtkWidget *widget;
-  GtkTreeView *tree_view;
-  GtkTreeSelection *selection;
-  GtkTreeIter iter;
+  GtkRBTree *tree;
+  GtkRBNode *node;
+
+  if (row < 0)
+    return FALSE;
 
   widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (table));
   if (widget == NULL)
     return FALSE;
 
-  if (row < 0)
+  if (!_gtk_rbtree_find_index (_gtk_tree_view_get_rbtree (GTK_TREE_VIEW (widget)),
+                               row,
+                               &tree,
+                               &node))
     return FALSE;
 
-  tree_view = GTK_TREE_VIEW (widget);
-  selection = gtk_tree_view_get_selection (tree_view);
-
-  set_iter_nth_row (tree_view, &iter, row);
-  return gtk_tree_selection_iter_is_selected (selection, &iter);
+  return GTK_RBNODE_FLAG_SET (node, GTK_RBNODE_IS_SELECTED);
 }
 
 static gboolean